package 代码记录.指定公司代码练习记录.华为_2024.分值200;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author zx
 * @create 2024-02-16 14:46
 * 贪心算法相关；代码自己可以看懂，二刷要能做出来
 */
public class 项目排期_23 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取输入
        String[] temp = sc.nextLine().split(" ");
        int[] works = Arrays.stream(temp).mapToInt(Integer::parseInt).toArray();//JDK8语法
        int n = Integer.parseInt(sc.nextLine());
        // 计算并输出结果
        int res = minTime(works, n);
        System.out.println(res);
    }

    public static int minTime(int[] works, int n) {
        // 将需求按工作量降序排序
        Arrays.sort(works);
        int[] res = new int[n];
        // 分配工作
        for (int i = works.length - 1; i >= 0; i--) {
            // 找到工作量最小的开发人员
            int minWorker = findMinWorker(res);
            // 将需求分配给工作量最小的开发人员
            res[minWorker] += works[i];
        }
        // 返回最长工作天数
        return Arrays.stream(res).max().getAsInt();
    }

    private static int findMinWorker(int[] works) {
        int minWorker = 0;
        int minWork = works[0];
        for (int i = 1; i < works.length; i++) {
            if (works[i] < minWork) {
                minWork = works[i];
                minWorker = i;
            }
        }
        return minWorker;
    }
}
